package org.ciallo.easytokencore.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Spring Web MVC 全局配置类
 *
 * <p>核心配置：</p>
 * <ul>
 *   <li>跨域请求(CORS)全局配置</li>
 *   <li>拦截器注册(可选)</li>
 *   <li>消息转换器配置(可选)</li>
 *   <li>静态资源处理(可选)</li>
 * </ul>
 *
 * <p>当前配置说明：</p>
 * <ul>
 *   <li>允许所有路径(/**)跨域访问</li>
 *   <li>允许所有来源(*)</li>
 *   <li>支持GET/POST/DELETE/PUT/OPTION方法</li>
 *   <li>不允许携带凭证(allowCredentials=false)</li>
 *   <li>预检请求缓存时间3600秒</li>
 * </ul>
 *
 * <p>配置示例：</p>
 * <pre>
 * {@code
 * @Override
 * public void addCorsMappings(CorsRegistry registry) {
 *     registry.addMapping("/api/**")
 *         .allowedOrigins("https://example.com")
 *         .allowedMethods("*")
 *         .allowCredentials(true);
 * }
 * }
 * </pre>
 *
 * @Description: Spring Web MVC全局配置
 * @Author: Jukomu
 * @Package: org.ciallo.easytokencore.config
 * @Project: easy-token-demo
 * @Version: 1.0.0
 * @name: WebConfig
 * @Date: 2025-05-17
 * @Filename: WebConfig
 * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurer
 * @see org.springframework.web.servlet.config.annotation.CorsRegistry
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry
                // 运许访问的路径
                .addMapping("/**")
                // 允许的请求来源
                .allowedOrigins("*")
                // 允许跨域访问的方法
                .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTION")
                // 是否允许携带参数
                .allowCredentials(false)
                // 最大响应时间
                .maxAge(3600);
    }
}
